//内存越界

#include<stdio.h>
#include<stdlib.h>

void printArr(int *arr, int len){
    for(int i=0; i<len; i++){
        //printf("%d, ", *(arr+i) ); //方式1
        printf("%d, ", arr[i] ); //方式2 等效
    }
    printf("\n");
}

int main(){
	int i;
	int len = 4;
	int *pt = (int*)malloc(len*sizeof(int)); //返回的是空指针，可以主动转换为某个类型
	int *p = pt;

    printf("p=%p, pt=%p\n", p, pt);

	for(i=0;i<len;i++){
		*p=i;
        printf("p=%p, pt=%p, *p[%d]=%d\n", p, pt,  i, *p );
		p++;
	}

	*p = 5; //这个越界了，但是没有报错？？
    printf("> p=%p, pt=%p, *p[%d]=%d\n", p, pt,  i, *p );

    //打印数组：使用原指针
    printArr(pt, len);

	return 0;
}
